/**
 * Iniciação Científica - SAE-CNPQ - 2013/2013
 * autor: Agnaldo A Esmael
 * Orientadores: Prof. Dr Ricardo Torres e Dr. Jefersson A Santos
 */
package view;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JRadioButton;
import javax.swing.JToggleButton;
import javax.swing.JToolBar;

import control.EventosGUI;

/**
 * @author agnaldo
 *
 */
public class ToolBarSuperior extends JToolBar implements ActionListener {

	//atributos da classe
	private JButton btAbrir, btAuto, btInterativo;
	private JToggleButton btSelecionar;
	private JLabel lb1;
	private JRadioButton cafe, nonCafe;
	private EventosGUI trataEventos;
	
	
	/**
	 * @param tEvt 
	 * 
	 */
	public ToolBarSuperior(EventosGUI tEvt) {
		
		trataEventos = tEvt;
		
		//Botão OPEN
		btAbrir = new JButton("Open");
		btAbrir.addActionListener(this); // como esta classe implementa o ActionListener basta usar THIS
		add(btAbrir);
		
		//Botão Selecionar
		btSelecionar = new JToggleButton("Selection");
		btSelecionar.addActionListener(this);
		add(btSelecionar);
		
		// Label
		lb1 = new JLabel("   Classes  ");
		add(lb1);
		
		cafe = new JRadioButton("Coffee");
		cafe.setSelected(true);
		nonCafe = new JRadioButton("Non-Coffee");
		cafe.addActionListener(this);
		nonCafe.addActionListener(this);
		this.add(cafe);
		this.add(nonCafe);
		
		final ButtonGroup grupo = new ButtonGroup();//garante q apenas um dos botões Radio é selecionado
		grupo.add(cafe); // se este botão for selecionado, deselecionar o outro
		grupo.add(nonCafe);
		
	/*	for (int i = 0; i < 6; i++) {
			String temp = ""+ (i+1);  // convertendo int p/ string sem usar a fç Integer.toString(int)
			bts.add( new JButton( temp ) );
			
			bts.get(i).setToolTipText( classes[i]);
			//bts.get(i).setMaximumSize(new Dimension(30,30));
			bts.get(i).addActionListener(this);
			add(bts.get(i));
		}
	*/	
		incluiSeparador(10);
		
		//Botão Auto - classificação sem interação com usuário
		btAuto = new JButton ("Auto Run");
		add(btAuto);
		
		incluiSeparador(3);
		
		// Botão Interativo - classificação interativa
		btInterativo = new JButton("Interactive Run");
		btInterativo.addActionListener(this);
		add(btInterativo);
		
		ativaBotoes(false);
		
	}

	/**
	 * Método ativa/desativa botões - forma de direcionar as ações do usuário
	 */
	public void ativaBotoes(boolean opcao) {
		cafe.setEnabled(opcao);
		nonCafe.setEnabled(opcao);
		btAuto.setEnabled(opcao);
		btInterativo.setEnabled(opcao);
		btSelecionar.setEnabled(opcao);
		btAbrir.setEnabled(!opcao);
	}

	/**
	 * Método para adicionar uma quantidade q de espaços em um Object Container
	 * @param q quantidade de espaços que devem ser inseridos
	 */
	private void incluiSeparador( int q ) {
		for (int i=0; i< q; i++)
			addSeparator();
	}
	
	/**
	 * Implementando cada acao desta GUI
	 */
	@Override
	public void actionPerformed(ActionEvent evento) {
		
		if(evento.getSource().equals((Object)btAbrir)) {
			if(trataEventos.openImage())
				btSelecionar.setEnabled(true);;
				
		}
		else if(evento.getSource().equals(btAuto))
			//a implementar
			;
		
		else if(evento.getSource().equals((Object)btSelecionar)) {
			if(btSelecionar.isSelected()){
				trataEventos.startSelection(true);
				ativaBotoes(true);
			} 
			else { 
				trataEventos.startSelection(false);
				ativaBotoes(false);
				btSelecionar.setEnabled(true);
				;
			}
		}
		
		else if(evento.getSource().equals(btInterativo)) 
			trataEventos.startInteractive();
		
		else if(evento.getSource().equals(cafe)){
			trataEventos.setColorClass(Color.BLACK, 0);
			
			System.out.println("café");
		}
		else if(evento.getSource().equals(nonCafe)){
			trataEventos.setColorClass(Color.GREEN, 1);
			System.out.println("NÂO café");
		}
	}

}
